# -*- coding: utf-8 -*-
from MediaCollection.Util.TagReader.FlacReader import FlacReader
from MediaCollection.Util.TagReader.Mp3Reader import Mp3Reader
from MediaCollection.Util.TagReader.OggReader import OggReader

"""
Die Wrapper-Klasse für die die jeweiligen TagReader. Unterstützt momentan Flac-,
Ogg- und MP3-Dateien. Diese Klasse sollte als Hauptklasse zum Einlesen von Tags 
genutzt werden.

@author: Philipp Dermitzel
@date: 2011-03-31
@version: 1.1.0
"""
class Reader(object):
    
    """
    ----------------------------------------------------------------------------
    Konstruktor
    ----------------------------------------------------------------------------
    """
    
    """
    Der Konstruktor.
    @param path: Der Pfad zur (Audio-)Datei.
    @type path: String
    """
    def __init__(self, path):
        """
        Der Pfad zur (Audio-)Datei.
        @type: String
        """
        self.__pathToFile = path
    
    """
    ----------------------------------------------------------------------------
    Methoden der Klasse
    ----------------------------------------------------------------------------
    """
    
    """
    Hauptmethode. Liest die Meta-Daten der Datei ein und liefert sie als 
    Dictionary als Rückgabewert. Wird die Datei nicht unterstützt, liefert die
    Methode False.    
    @return: Die Meta-Daten.
    @rtype: Dictionary/False
    """        
    def getTagData(self):
        parts = self.__pathToFile.split('.')
        fileExtension = parts[len(parts) - 1].lower()
        if fileExtension == 'mp3':
            reader = Mp3Reader(self.__pathToFile)
            return reader.getTagData()
        elif fileExtension == 'flac':
            reader = FlacReader(self.__pathToFile)
            return reader.getTagData()
        elif fileExtension == 'ogg':
            reader = OggReader(self.__pathToFile)
            return reader.getTagData()
        else: return False
